# UDP 接收端（监听 5000 端口）

import socket

def udp_server():
    # 创建UDP套接字（AF_INET：IPv4，SOCK_DGRAM：UDP协议）
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 绑定端口（0.0.0.0表示监听所有网络接口，端口5000）
    server_addr = ('0.0.0.0', 5000)
    udp_socket.bind(server_addr)
    print("UDP接收端已启动，正在5000端口监听...")

    try:
        while True:
            # 接收数据（缓冲区大小1024字节），返回数据和发送方地址
            data, client_addr = udp_socket.recvfrom(1024)
            # 解码字节数据为字符串
            message = data.decode('utf-8')
            print(f"收到来自{client_addr}的消息：{message}")

            # 判断是否收到"bye"（忽略大小写），若收到则退出循环
            if message.lower() == 'bye':
                print("收到结束指令，停止监听。")
                break
    finally:
        # 关闭套接字
        udp_socket.close()


if __name__ == "__main__":
    udp_server()